package log

import (
	"go.uber.org/zap"
	"sync"
)

// 定义日志包装对象
type zapLogger struct {
	z *zap.Logger
}

// 定义日志的可选项
type options struct {
}

// 创建变量
var (
	// 创建锁
	mu sync.Mutex
	// std定义全局的日志对象
	std = NewLogger(NewOptions())
)

// 初始化
func Init(option *options) {
	mu.Lock()
	defer mu.Unlock()
	std = NewLogger(option)
}

// 创建包装对象
func NewLogger(option *options) *zapLogger {
	if option == nil {
		option = NewOptions()
	}

	z := &zap.Logger{}
	logger := &zapLogger{z: z}

	return logger
}

// 创建包装对象的选项
func NewOptions() *options {
	return &options{}
}
